using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using Castle.ActiveRecord;

namespace EYDIngenieria.ERP.ObjetosDeNegocio.Dominio    
{
    [ActiveRecord]
    public class OrdenDeTrabajo: ActiveRecordBase<OrdenDeTrabajo>
    {
        private int numeroOrdenDeTrabajo;
        private Cliente cliente;
        private IList<DetalleOrdenDeTrabajo> detalle = new List<DetalleOrdenDeTrabajo>();
        private double montoTotal;
        private int id;
        private string descripcion;
        private EstadoOrdenDeTrabajo estado;
        private int factura;
        private double monto;
        private DateTime fechaFacturacion;
        private DateTime fecha;
        private IList<GastosGenerales> gastosGenerales;
        private CompraMaterialesOT compraMaterialesOT;
        private IList<OrdenDeTrabajoAuxiliar> ordenesDeTrabajoAuxiliar;

        [HasMany]
        public IList<OrdenDeTrabajoAuxiliar> OrdenesDeTrabajoAuxiliar
        {
            get { return ordenesDeTrabajoAuxiliar; }
            set { ordenesDeTrabajoAuxiliar = value; }
        }

        [BelongsTo("IdCompraMaterialesOT")]
        public CompraMaterialesOT CompraMaterialesOT
        {
            get { return compraMaterialesOT; }
            set { compraMaterialesOT = value; }
        }


        [HasMany]
        public IList<GastosGenerales> GastosGenerales
        {
            get { return gastosGenerales; }
            set { gastosGenerales = value; }
        }

       

        [Property]
        public DateTime FechaFacturacion
        {
            get { return fechaFacturacion; }
            set { fechaFacturacion = value; }
        }



        [Property]
        public double Monto
        {
            get { return monto; }
            set { monto = value; }
        }



        [Property]
        public int Factura
        {
            get { return factura; }
            set { factura = value; }
        }



        [BelongsTo("IdEstado")]
        public EstadoOrdenDeTrabajo Estado
        {
            get { return estado; }
            set { estado = value; }
        }





        [Property]
        public String Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }



        

        [Property]
        public DateTime Fecha
        {
            get { return fecha; }
            set { fecha = value; }
        }

        [PrimaryKey(PrimaryKeyType.Native)]
        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        [BelongsTo("IdCliente")]
        public Cliente Cliente  
        {
            get { return cliente; }
            set { cliente = value; }
        }

       [Property]
        public int NumeroOrdenDeTrabajo
        {
            get { return numeroOrdenDeTrabajo; }
            set { numeroOrdenDeTrabajo = value; }
        }

        [HasMany]
        public IList<DetalleOrdenDeTrabajo> Detalle
        {
            get { return detalle; }
            set { detalle = value; }
        }

    }
}
